Nas lições anteriores, focamos em operações elementares (como uma ReLU básica em uma matriz). Essas são limitadas pela memória porque a GPU gasta mais tempo movendo dados da HBM para os registradores do que realizando cálculos matemáticos.
1. Por que o GEMM é Central
A Multiplicação Geral de Matrizes (GEMM) tem uma complexidade computacional de $O(N^3)$ enquanto exige apenas $O(N^2)$ acesso à memória. Isso nos permite ocultar a latência da memória por meio de um grande throughput aritmético, tornando-o o "pulso" dos modelos de linguagem grandes (LLMs).
2. Representação da Memória em 2D
A memória RAM física é unidimensional. Para representar um tensor bidimensional, usamos deslocamentos. Um erro comum em produção é assumir que um tensor é contíguo. Se você confundir os deslocamentos de linha e coluna em seus cálculos de ponteiros, poderá acessar dados "fantasma" ou provocar violações de memória.
3. Generalização por Lotes
O Triton generaliza a lógica elementar ao mudar de ponteiros simples para blocos de ponteiros. Usando blocos 2D (por exemplo, $16 \times 16$), exploramos reutilização de dados na SRAM de alta velocidade, mantendo os dados "quentes" para operações combinadas como adição de viés ou ativações antes de gravá-los de volta na memória global.